# OJ——25. Red And Green
# 在美丽的尧山，有一个大广场，50周年校庆的时候
# Solo就在大广场上见证了史上最壮观的焰火。
# 在广场上有一排方砖是有颜色的，被涂上红色或者绿色，
# 从左到右排列。现在校方要求重新喷涂颜色，
# 但不一定要每一块方砖都重新喷涂，因为校方的目的是：
# 每一块红色的方砖都至少在绿色方砖的左边（也就是
# 每一个红的左边不能有绿的），并且尽量喷涂最少的次数。
# 输入只有一行，包含一个字符串S，且只包含'R'(代表红色)或者'G'(代表绿色)。
# 我们保证字符串S的长度L的范围是(0 < L < 50 )。
# 输出需要重新喷涂的方砖的最少数量。
# 输入样例
# RGRGR
# 输出样例
# 2
# 解题思路：
# 看到该题我的第一思路是找到字符串最右边的那个R然后将其左侧的所有G全部转换为R，
# 并将结果输出；但是仔细想了想这种做法不对，因为这不一定是最少的次数，比如RGGGR，
# 这种情况下其实我们只需要将最后的那个R转换为G就行了。考虑到字符串中
# 每个位置需要涂色的次数都不一样，自然而然想到了用动态规划解决该问题，
# 但是一时之间忘记了动态规划表达式的公式，所以又想能不能用其他方法
# 解决该问题。我们在仔细看题目的要求，就会发现最终涂色的结果，
# 要么是全部是R，要么是左边是R右边是G，会出现一个分界线，想清楚这一点之后，
# 就很容易解题了。

import math


def func():
  s = input().strip()
  result = s.count('G')
  for num in range(len(s)):
    if s[num] == 'G':
      result = min(result, s[:num].count('G') + s[num:].count('R'))
  print(result)
